import scrapy
import json
from scrapy_01.items import Bilibili_danceItem

'''
    爬取bilibili舞蹈区宅舞部分，
    按照时间排序，抓取一页20条，100页用于测试
    爬取标题、简介、作者名字、bv号 其他的没取。
'''
class BilibiliDanceSpider(scrapy.Spider):
    name = 'bilibili_dance'
    allowed_domains = ['bilibili.com']
    ##基础url
    baseurl = "https://api.bilibili.com/x/web-interface/newlist?rid=20&type=0&pn="
    ##url偏移量，也就是页码
    offset = 1
    #结尾表明一页20条记录，如果不写默认50条
    endend = "&ps=20"
    start_urls = [baseurl+str(offset)+endend]
    def parse(self, response):
        items = Bilibili_danceItem()
        #把str类型转换成json格式读取
        #写出的时候用dumps,转换成str
        string = json.loads(response.body)['data']['archives']
        for s in string:
            items['title'] = s['title']
            # 简介
            items['desc'] = s['desc']
            # 作者名字
            items['owner_name'] = s['owner']['name']
            # bv号
            items['bvid'] = s['bvid']
            items['pic'] = s['pic']
            yield items
        #爬取100页
        if(self.offset<500):
            self.offset +=  1
            url1 = self.baseurl+str(self.offset)+self.endend
            print(url1)
            yield scrapy.Request(url1,callback=self.parse)
# 执行命令
# scrapy crawl bilibili_dance -o bilibili_dance.json -s FEED_EXPORT_ENCODING=UTF-8 --nolog
